//package com.example.demo.controller;
//
//import cn.hutool.core.date.DateUtil;
//import com.example.demo.word.GenerateUtil;
//import com.example.demo.word.model.Employee;
//import com.example.demo.word.model.RenderRowParam;
//import com.example.demo.word.model.WordGenerateConfig;
//import org.apache.commons.io.FileUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.core.io.InputStreamResource;
//import org.springframework.http.HttpHeaders;
//import org.springframework.http.MediaType;
//import org.springframework.http.ResponseEntity;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.io.ByteArrayInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.util.Arrays;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@RestController
//@RequestMapping("/api/word")
//public class WordController {
//
//    @Autowired
//    private GenerateUtil wordGeneratorService;
//
//    @GetMapping("/generate")
//    public ResponseEntity<InputStreamResource> generateWord() throws Exception {
//        // 模拟数据
//        Map<String, Object> data = new HashMap<>();
//        // 数据准备
//        List<Map<String, String>> users = Arrays.asList(
//                new HashMap<>() {{
//                    put("name", "王五");
//                    put("role", "开发");
//                }},
//                new HashMap<>() {{
//                    put("name", "赵六");
//                    put("role", "测试");
//                }}
//        );
//
//        data.put("date", DateUtil.now());
//        data.put("employees", users);
//
//        // 生成Word内容
////        ByteArrayOutputStream out = new ByteArrayOutputStream();
//        WordGenerateConfig config = new WordGenerateConfig();
//        config.outputPath = "d:/template";
//        config.templatePath = "d:/template/test.docx";
//        config.fileName = "out";
//        config.tagNames = new String[]{"employees"};
//        config.isTransformPdf = false;
//        config.data = data;
//        // 设置行回调，用于设置序号
//        config.rowCallback.put("employees", (RenderRowParam param) -> {
//            param.getRow().getCell(0).setText(Integer.toString(param.getIndex()));// 设置序号
////            param.getRow().getCell(0).setText(param.getRowData().get("name").toString());
//        });
//
//        File file = wordGeneratorService.generateWord(config);
//        // 将文件转换为字节数组
//        byte[] a = FileUtils.readFileToByteArray(file);
//        ByteArrayInputStream in = new ByteArrayInputStream(a);
//
//        // 设置HTTP响应头
//        HttpHeaders headers = new HttpHeaders();
//        headers.add("Content-Disposition", "attachment; filename=generated.docx");
//
//        return ResponseEntity.ok()
//                .headers(headers)
//                .contentType(MediaType.APPLICATION_OCTET_STREAM)
//                .body(new InputStreamResource(in));
//    }
//}
